// Package config 处理项目配置
package config

import (
	"github.com/spf13/viper"
	"log"
)

// AppConfig 应用程序配置结构体
// 包含MySQL、Redis、Nacos和Elasticsearch的配置信息
// 初始化: 通过Init函数加载配置文件并解析到结构体中
// 示例: config.Init() // 在应用启动时调用

type AppConfig struct {
	Mysql struct {
		User     string
		Password string
		Host     string
		Port     int
		Database string
	}
	Redis struct {
		Host     string
		Password string
		Port     int
	}
	Nacos struct {
		Username  string
		Password  string
		Namespace string
		DataId    string
		Group     string
		Host      string
		Port      uint
	}
	// Elasticsearch 配置
	Elasticsearch struct {
		Addresses []string
		Username  string
		Password  string
	}
}

// AppConf 全局配置变量，应用程序中可直接访问
var AppConf AppConfig

// Init 初始化配置
// 功能: 加载配置文件并解析到AppConf结构体
// 使用viper库读取dev.yaml配置文件
func Init() {
	viper.SetConfigFile("../dev.yaml")
	viper.ReadInConfig()
	viper.Unmarshal(&AppConf)
	log.Print(AppConf, "动态配置")
}
